import request from '../../utils/request';
Page({
    data: {
        tasks: [], // 初始化为空数组
        isModalVisible: false,
        modalTitle: '',
        modalContent: '',

        // 分页相关数据
        pageNum: 1,
        pageSize: 15,
        isLoadingMore: false, // 是否正在加载更多
        hasMoreData: true     // 是否还有更多数据
    },

    onLoad: function (options) {
        this.fetchTasks(false); // 初始加载第一页，非加载更多
    },

    // 获取任务列表函数
    fetchTasks: function (isLoadMore = false) {
        if (this.data.isLoadingMore) return; // 如果正在加载，则不重复触发

        if (isLoadMore) {
            this.setData({ isLoadingMore: true });
        } else {
            // 如果是初始加载或刷新，重置页码和数据
            this.setData({
                pageNum: 1,
                tasks: [],
                hasMoreData: true
            });
        }

        request({
            url: 'api/myUser/getTask',
            method: 'get',
            data: {
                pageNum: this.data.pageNum,
                pageSize: this.data.pageSize
            }
        }).then(res => {
            if (res.code == 200 && res.rows) {
                res.rows.forEach(item => {
                    item.statusText = item.state == 0 ? '未审核' : item.state == 1 ? '审核通过' : item.state == 2 ? '未通过' : '';
                });

                const newTasks = isLoadMore ? this.data.tasks.concat(res.rows) : res.rows;
                const currentPageSize = res.rows.length;

                this.setData({
                    tasks: newTasks,
                    hasMoreData: currentPageSize >= this.data.pageSize, // 如果返回的数据量小于pageSize，则认为没有更多了
                    pageNum: this.data.pageNum + 1 // 页码准备加载下一页
                });

            } else if (res.code == 200 && (!res.rows || res.rows.length === 0)) {
                // 成功但没有数据了
                this.setData({
                    hasMoreData: false
                });
            } else {
                // 请求失败或其他错误
                wx.showToast({
                    title: res.message || '加载失败',
                    icon: 'none'
                });
                if (!isLoadMore) { // 初始加载失败，可以清空列表或显示错误提示
                    this.setData({ tasks: [], hasMoreData: false });
                }
            }
        }).catch(err => {
            console.error('Fetch tasks error:', err);
            wx.showToast({
                title: '加载异常',
                icon: 'none'
            });
            if (!isLoadMore) {
                this.setData({ tasks: [], hasMoreData: false });
            }
        }).finally(() => {
            if (isLoadMore) {
                this.setData({ isLoadingMore: false });
            }
            wx.stopPullDownRefresh(); // 如果是下拉刷新，停止刷新动画
        });
    },

    // 触底加载更多
    onReachBottom: function () {
        if (this.data.hasMoreData && !this.data.isLoadingMore) {
            console.log('Reach bottom, loading more...');
            this.fetchTasks(true);
        } else if (!this.data.hasMoreData) {
            console.log('No more data to load.');
            // 可以在这里给一个 "没有更多了" 的提示，或者在wxml中处理
        }
    },

    // 下拉刷新
    onPullDownRefresh: function () {
        console.log('Pull down to refresh...');
        this.fetchTasks(false); // 刷新，加载第一页
    },

    handleTaskItemTap: function (e) {
        let index = e.currentTarget.dataset.index;
        let task = this.data.tasks[index];
        console.log(task);
        if (task.state == 2) {
            // wx.showToast({
            //     title: '驳回原因：' + task.remarks,
            //     icon: 'none',
            //     mask: true
            // })
            this.setData({
                isModalVisible: true,
                modalTitle: '驳回原因',
                modalContent: task.remarks || '无具体驳回原因'
            });
        }
    },
    onModalConfirm: function () {
        this.setData({
            isModalVisible: false
        });
    },
    onShow: function () { },
});